public class code5 {
    //有效三角形的个数
    //优化1：排序：这样判断是否为三角形只需判断一次
    //优化2：如果最小的a都满足，则后面的都满足
    public int triangleNumber(int[] nums) {
        Arrays.sort(nums);
        int ret = 0;
        for (int c = nums.length - 1; c > 1; c--) {//固定最大数
            int a = 0, b = c - 1;
            while (a < b) {
                if (nums[a] + nums[b] > nums[c]) {//判断
                    ret += b - a;//如果最小的a都满足，则后面的都满足
                    b--;
                } else a++;
            }
        }
        return ret;
    }
}
